1. Field of the Invention
This invention relates to data storage and more particularly relates to data storage using a shared, front-end, distributed redundant array of independent drives (“RAID”).
2. Description of the Related Art
Traditional RAID utilizes an array of disks or other storage devices with at least a portion of each device dedicated to the RAID and forming a RAID group. A RAID controller manages storage requests to the RAID group. For redundant systems, the RAID controller has a backup RAID controller ready to take over if the master RAID controller fails or is unavailable. Storage requests from multiple clients that seek to access the same data stored in the RAID are typically sequentially executed in order of arrival.
A front-end, distributed RAID system includes autonomous storage devices that may each include a storage controller that can function as a distributed RAID controller and the storage devices can each be configured in multiple, overlapping RAID groups serving multiple clients. Occasionally, two clients may seek to access the same data. If one storage request arrives first and executes, then typically there is no inconsistency of the data. If, on the other hand, two or more storage requests for the same data arrive at the same time or nearly the same time, the data may be corrupted.
For example, if data is stored on four storage devices in a RAID group, where one of the storage devices is assigned as a parity-minor storage device, and a first client sends a storage request to a first storage controller acting as a RAID controller and a second client sends a second storage request to a second storage device acting as a second RAID controller and both storage requests access the same data, the first storage device may commence execution of the storage request on the first storage device then the other storage devices of the RAID group. Concurrently, the second RAID controller on the second storage device may commence execution of the second storage request on another storage device and then on the remaining storage devices of the RAID group. This mismatch in execution may be caused by physical distance between the storage devices, execution time discrepancies, etc. The result may be corrupted data.